package mpbe.geometria;

/*
 * Este codigo es software libre y se encuentra licenciado 
 * bajo los términos de la Licencia Pública General de GNU versión 3 
 * según se encuentra publicada por la Free Software Foundation.
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Autor: Martin Pablo Bellanca <martin.bellanca@gmail.com>
 * web: http://mpbe.blogspot.com/
 */

import org.json.simple.JSONObject;

public class Punto {
	public double X;
	public double Y;
	
	// Constructores
	public Punto () {X=0; Y=0;}
	public Punto (double X, double Y) {this.X=X; this.Y=Y;}
		
	
	//*****************************************************
	// funciones sobre el punto
	//*****************************************************
	public Punto mover(double x, double y) {return new Punto(this.X+x, this.Y+y);}
	public double distancia (Punto p2) {return Math.sqrt(Math.pow((p2.X-X), 2)+Math.pow((p2.Y-Y), 2));}
	
	//*****************************************************
	// geters and setters
	//*****************************************************
	public void setNulo () {X=0; Y=0;}
	public void setUnitario () {X=1; Y=1;}
	public void set(double x, double y) {
		this.X=x;
		this.Y=y;
	}
	public Punto get(){
		return new Punto(X,Y);
	}
	
	public double getX() {
		return X;
	}
	public void setX(double x) {
		X = x;
	}
	
	public double getY() {
		return Y;
	}
	public void setY(double y) {
		Y = y;
	}
	
	public void copyInto(Punto punto){
		punto.X = X;
		punto.Y = Y;
	}

	
	//*****************************************************
	// Funciones JSON
	//*****************************************************
	public void put_JSON(JSONObject jo){
		X = (Double) jo.get("X");
		Y = (Double) jo.get("Y");
	}
	public JSONObject get_JSONObject() {
		JSONObject jo = new JSONObject();
		jo.put("X", X);
		jo.put("Y", Y);
		return jo;
	}
	public String get_JSONString() {
		String res = "{\"X\":"+X+", ";
		res += "\"Y\":"+Y+"}";
		return res;
	}
	
}
